package com.nrzt;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.SkipPageException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
 * 	获取标签体对象：JspFragment jspBody = getJspBody();
 * 	把标签体内容输出到页面：jspBody.invoke(null);
 * 	tld中指定标签内容类型：scriptless。
 * 
 * 	<body-content>元素的可选值有：
 * 			empty：无标签体。
 * 			scriptless：标签体内容不能是Java脚本，但可以是EL、JSTL等。在SimpleTag中，如果需要有标签体，那么就使用该选项；
 * @author nrzt
 *
 */
public class Hello2Tag extends SimpleTagSupport{
	private boolean test;//标签属性
	public boolean isTest() {
		return test;
	}
	public void setTest(boolean test) {
		this.test = test;
	}
	
	
	
	public void doTag() throws JspException, IOException {	
		PageContext pc = (PageContext) this.getJspContext();
//		HttpServletRequest req = (HttpServletRequest) pc.getRequest();
//		String s = req.getParameter("exec");	// http://localhost:8080/My_JSTL/index.jsp?exec=ddfftrue
//		if(s != null && s.endsWith("true")) {
//			JspFragment body = this.getJspBody();
//			body.invoke(null);
//		}
		JspFragment body = this.getJspBody();
		//三种方式的区别
		this.getJspContext().getOut().print("<h1>只能看到我！</h1>");
		//body.invoke(null);
		//body.invoke(pc.getResponse().getWriter());
		//如果希望在执行了自定义标签后，不再执行JSP页面下面的东西，那么就需要在doTag()方法中使用SkipPageException。
		//throw new SkipPageException();
	}
}
